.TH chknvm 1 "November 2013" "open-plc-utils-0.0.3" "Qualcomm Atheros Open Powerline Toolkit"

.SH NAME
chknvm - Qualcomm Atheros PLC Image File Validator

.SH SYNOPSIS
.BR chknvm
.RI [ options ]
.IR file
.RI [ file ]
.RI [ ... ]

.SH DESCRIPTION
Validate the image chain found inside a Qualcomm Atheros PLC firmware or parameter file by checking file structure, file size, image header sizes and checksums and image sizes and checksums.
Optionally, display internal image header information or information extracted from selected image types, when present.
Use this program to detect corrupted firmware or parameter files or inspect image files to determine content.

.PP
This program handles both the older \fBThunderbolt\fR and \fBLightning\fR and the newer \fBPanther\fR and \fBLynx\fR firmware file formats.
It validates files directly from disk and so it is slower than program \fBchknvm2\fR but needs less memory at runtime.

.PP
This program is part of the Qualcomm Atheros Powerline Toolkit.
See the \fBAMP\fR man page for an overview and installation instructions.

.SH OPTIONS

.TP
.RB - i
Print revision string identity fields in fixed-width columns.
This option is useful when searching .nvm folders for a specific build.

.TP
.RB - m
Display manifest content, if present.
The manifest is a special module, included in some image chains, that contains useful information about the chain.
This option suppresses the summary 'looks good' message.

.TP
.RB - r
Print firmware revision string on stdout.
This option suppresses the summary 'looks good' message.

.TP
.RB - s
Print SDRAM configuration block on stdout.
This option automatically suppresses the summary 'looks good' message.

.TP
.RB - q
Suppresses printing of routine messages.
Specifically, it suppresses the summary 'looks good' message.

.TP
.RB - v
Print additional information such as the image header for each image processed.
This information can be used to distinguish one firmware file from another, if you know what to look for.

.TP
.RB - ? ,-- help
Print program help summary on stdout.
This option takes precedence over other options on the command line.

.TP
.BR - ! ,-- version
Print program version information on stdout.
This option takes precedence over other options on the command line.
Use this option when sending screen dumps to Atheros Technical Support so that they know exactly which version of the Linux Toolkit you are using.

.SH ARGUMENTS

.TP
.IR file
The name of an Atheros image file.
By convention, Atheros Image files have a \fB.nvm\fR file extension but this program does not enforce this convention.

.SH DISCLAIMER
Qualcomm Atheros firmware file structure and content is proprietary to Qualcomm Atheros, Ocala FL USA.
Consequently, public information is not available.
Qualcomm Atheros reserves the right to change firmware file structure or content or change the name or behavior of any program that inspects or changes firmware files, in future software releases without any obligation to notify or compensate users of such programs.

.SH EXAMPLES
This example reads file abc.nvm and validates it.
The message shown indicates that the file is the correct length, image headers and images have the correct length and checksum and there are no read errors.
The file can be have either the newer or older format.

.PP
    # chknvm abc.nvm
    abc.nvm looks good

.PP
The following example reads three files in succession and reports on each one.
You can suppress good news with the \fB-q\fR option.

.PP
   # chknvm INT6400.nvm AR7400.nvm AR7420.nvm
   INT6400.nvm looks good
   AR7400.nvm looks good
   AR7420.nvm looks good

.PP
This next example displays the SDRAM parameter block found in the named files.
SDRAM parameter blocks are a legacy feature.
They were to configure memory.
Powerline device now run a configuration applet, instead.
Observe that file \fBAR6400.nvm\fB us the only one that contains SDRAM parameters.

.PP
   # chknvm -s INT6400.nvm AR7400.nvm AR7420.nvm
   ------- INT6400.nvm (0) -------
           SIZE=0x04000000 (64mb)
           CONF=0x00143188
           TIM0=0x01E1D491
           TIM1=0x000883D6
           CNTRL=0x00003089
           REF=0x00000366
           CLOCK=0x00000001

.PP
This next example prints the firmware revision string found inside older image files.
The option can be used to identify the actual firmware image present when the filename has been changed.
Newer image files have a manifest, instead.
Observe that file \fBAR7420.nvm\fR shows no firmware revision string because it has the newer image file format.

.PP
   # chknvm -r INT6400.nvm AR7400.nvm AR7420.nvm
   INT6400.nvm (3) INT6000-MAC-4-1-4122-01-4020-20100219-FINAL
   AR7400.nvm (5) INT7400-MAC-7-0-7011-01-52-20110811-FINAL

.PP
This example prints the manifest found inside newer firmware files.
This can be used to distinguish firmware files from parameter files, determine exact firmware or parameter file revisions and so forth.
Observe that we specified several files on the command line but only one file, \fBAR7420.nvm\fR, contained a mainfest.

.PP
   # chknvm -m INT6400.nvm AR7400.nvm AR7420.nvm
   ------- AR7420.nvm (0) -------
           Signature: 1234ABCD
           Hardware Compatibility: AR74200
           Chain Major Version: 0
           Chain Minor Version: 1
           Chain Type: Firmware
           Build Major Version: 0
           Build Minor Version: 0
           Build Type: Special
           Manifest Version: 1
           Build Number: 0
           Build Date: 20110811
           Build Time: 203853
           Device Type: 29728
           Build Hostname: TOR-SW-SIM04
           Build Username: buildbot
           Build Description: Custom
           Build Version String: AR-7420-FW-0_0-0_2-20110811:203853-buildbot:TOR-SW-SIM04-1-0_1

.SH SEE ALSO
.BR chknvm2 ( 1 ),
.BR chkpib ( 1 ),
.BR chkpib2 ( 1 ),
.BR int6ktest (7),
.BR nvmmerge ( 1 ),
.BR nvmsplit ( 1 ),
.BR plctest ( 1 )

.SH CREDITS 
 Charles Maier

